/*
 * Copyright 2022-2029 heshuixing(https://gitee.com/heshuixing)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.mercury.ec.framework.air.core.client.impl.skyecho.dto.searchflight;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.mercury.ec.framework.air.core.client.impl.skyecho.dto.SkyechoCommonReqDTO;
import lombok.Data;

import java.time.LocalDate;

/**
 * 航班搜索请求参数
 *
 * @author hesx
 */
@Data
public class SkyechoSearchFlightReqDTO extends SkyechoCommonReqDTO {

    /**
     * 航段
     * 例：CANCSX
     */
    @JsonProperty("Trip")
    private String trip;
    /**
     * 航班日期
     * 例：2015.12.21
     */
    @JsonProperty("Air_date")
    @JsonFormat(pattern = "yyyy.MM.dd")
    private LocalDate airDate;
    /**
     * 乘客类型：A成人，C儿童，B婴儿;格式 ：乘客类型数量
     * 例：“B1,A1,C2”表示一个成功、一个婴作，两个儿童。
     */
    @JsonProperty("Psg_type")
    private String psgType = "A1,C1";
//    private String psgType;
    /**
     * 航空公司 航空公司两字码，查询所有航空公司航班时不用输入
     * 例：MU
     */
    @JsonProperty("Airline")
    private String airline;
    /**
     * 三方协议号
     */
    @JsonProperty("Corp_ffp")
    private String corpFfp;
    /**
     * 查询全舱 是否查询状态为 S、L、Q 的舱位。
     * notopen 是否全舱位查询(包括不可售的)；Y为是,N为否
     */
    @JsonProperty("Notopen")
    private String notOpen = "N";
    /**
     * 最低价/全价
     * L:每个航班返回最低价; A: 返回所有可用舱位价格。缺省为 L
     */
    @JsonProperty("LowestOrAll")
    private String lowestOrAll = "L";
    /**
     * 运价类型
     * PUB-查公布价, YPUB-只查Y舱公布价,ALL-包括公布价和净价。缺省为ALL
     */
    @JsonProperty("fareSource")
    private String fareSource = "ALL";
    /**
     * 是否需要fare 信息
     * 结果中是否需要 fare 信息,Y/N，缺省为 N
     */
    @JsonProperty("FaresNeeded")
    private String faresNeeded;
    /**
     * 按机场或城市查询
     * 按机场或城市查询，取值 1/2,1按机场查，2 按城市查
     */
    @JsonProperty("CityOrAirport")
    private String cityOrAirport = "1";
    /**
     * 服务等级
     * F/C/Y 可选
     */
    @JsonProperty("Service_code")
    private String serviceCode;
    /**
     * Office号 指定已授权的Office号
     */
    @JsonProperty("Office_ID")
    private String officeId;

    @Override
    public String getUri() {
        return "/cgishell/module/json/air_listshp_new.pl";
    }
}
